#!/bin/bash

#set -x

# defaults
MPIRUN="mpirun"
MPIRUNEXECPARM=""

# include definitions
. ./mpirun.defs

TESTNAME=mapped_1

if (! [ -d run_test_${TESTNAME} ] ) 
then
    mkdir run_test_${TESTNAME}
fi

SIONDUMP=../siondump

(

  cd run_test_${TESTNAME}
  
  export LSION_DEBUG=test_${TESTNAME}
  export LSION_DEBUG_MASK=1023
  export LSION_DEBUG_RANK1=0
  export LSION_DEBUG_RANK2=1
  export LSION_ERROR_MSG_RANK=0
  export LSION_DEBUG_SILENT=1
  export OMP_NUM_THREADS=1

#  echo "on rank 0: starting Test with SION_COLLSIZE=$LSION_COLLSIZE" > stdout.log
#  echo "on rank 0: starting Test with SION_COLLSIZE=$LSION_COLLSIZE" > stderr.log
#  ${MPIRUN} ../test_${TESTNAME} 1>> stdout.log 2>> stderr.log

#  export LSION_COLLSIZE=4
  echo "on rank 0: starting Test with SION_COLLSIZE=$LSION_COLLSIZE" > stdout.log
  echo "on rank 0: starting Test with SION_COLLSIZE=$LSION_COLLSIZE" > stderr.log
  if [ "${COVERAGE}" = "kcov" ] && type kcov 2>&1 > /dev/null
  then
      ${MPIRUN} sh -c "kcov --include-pattern=sion_ kcov_output_\$\$ ../test_${TESTNAME}" ${MPIRUNEXECPARM} 1>> stdout.log 2>> stderr.log
      kcov --merge kcov_output kcov_output_* 2>&1 > /dev/null
  else
      ${MPIRUN} ../test_${TESTNAME} ${MPIRUNEXECPARM} 1>> stdout.log 2>> stderr.log
  fi

  export LSION_DEBUG=test_siondump
  ${SIONDUMP} -a -l test_mappedB.out 1>> stdout.log 2>> stderr.log

  grep 'on rank 0' stdout.log > stdout_0.log
  grep 'on rank 0' stderr.log > stderr_0.log

  grep 'siondump:' stdout.log | grep -v 'endianness' | grep -v 'SIONlib version' >> stdout_0.log

  if diff stderr_0.log ../test_${TESTNAME}_stderr_0.log > /dev/null
  then
      if diff stdout_0.log ../test_${TESTNAME}_stdout_0.log > /dev/null
      then
	  echo "     test_${TESTNAME}              ... OK"
      else
	  echo "     test_${TESTNAME}              ... FAILED (diff in stdout)"
	  diff -u stdout_0.log ../test_${TESTNAME}_stdout_0.log
      fi
  else
      echo "     test_${TESTNAME}              ... FAILED (diff in stderr)"
      diff -u stderr_0.log ../test_${TESTNAME}_stderr_0.log
  fi

)
